package com.pds.web.message.controller;

import com.pds.common.core.controller.BaseController;
import com.pds.common.core.domain.R;
import com.pds.common.core.page.TableDataInfo;
import com.pds.web.message.dto.MessageReadStatusDTO;
import com.pds.web.message.dto.MessageSendStatusDTO;
import com.pds.web.message.entity.PdsRemindMessage;
import com.pds.web.message.service.PdsRemindMessageService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;

/**
 * 部门机构通知信息表
 *
 * @author srf sunlightcs@gmail.com
 * @since 1.0.0 2024-02-05
 */
@RestController
@RequestMapping("/remindMessage")
@Api(tags="部门机构通知信息")
public class PdsRemindMessageController extends BaseController {
    @Resource
    private PdsRemindMessageService pdsRemindMessageService;

    /**
     * 分页查询通知信息
     *
     *   pageNum/pageSize分页字段
     *   筛选条件字段
     * @return 查询结果
     */
    @ApiOperation("分页查询通知信息")
    @GetMapping("/page")
    public TableDataInfo pageRemindMessage(PdsRemindMessage pdsRemindMessage){
        startPage();
        List<PdsRemindMessage> list = pdsRemindMessageService.selectList(pdsRemindMessage);
        return getDataTable(list);
    }

    /**
     * 查询通知信息列表
     *
     *   筛选条件字段
     * @return 查询结果
     */
    @ApiOperation("查询通知信息列表")
    @GetMapping("/list")
    public R<List<PdsRemindMessage>> listRemindMessage(PdsRemindMessage pdsRemindMessage){
        List<PdsRemindMessage> list = pdsRemindMessageService.selectList(pdsRemindMessage);
        return R.ok(list);
    }

    /**
     * 根据ID查询通知信息
     *
     * @param id 主键
     * @return 单条数据
     */
    @ApiOperation("通知信息详情")
    @GetMapping("/queryById/{id}")
    public R<PdsRemindMessage> queryRemindMessageById(@PathVariable("id")Long id) {
        return R.ok(pdsRemindMessageService.queryById(id));
    }

    /**
     * 创建通知信息
     * @param pdsRemindMessage 记录
     * @return 通知信息
     */
    @ApiOperation("创建通知信息")
    @PostMapping("/add")
    public R<PdsRemindMessage> addRemindMessage(@RequestBody PdsRemindMessage pdsRemindMessage){
        return R.ok(pdsRemindMessageService.insert(pdsRemindMessage));
    }

    /**
     * 修改通知信息
     * @param pdsRemindMessage 记录
     * @return 成功标识
     */
    @ApiOperation("修改通知信息")
    @PutMapping("/edit")
    public R<Boolean> editRemindMessage(@RequestBody PdsRemindMessage pdsRemindMessage){
        return R.ok(pdsRemindMessageService.update(pdsRemindMessage));
    }

    /**
     * 根据ID删除通知信息
     *
     * @param id 主键
     * @return 删除是否成功
     */
    @ApiOperation("删除通知信息")
    @DeleteMapping("/delete")
    public R<Boolean> deleteRemindMessageById(@RequestParam Long id) {
        return R.ok(pdsRemindMessageService.deleteById(id));
    }

    /**
     * 下发通知信息
     * @param messageSendStatusDTO 记录
     * @return 成功标识
     */
    @ApiOperation("下发通知信息")
    @PutMapping("/editSendStatus")
    public R<Boolean> editRemindMessageSendStatus(@RequestBody MessageSendStatusDTO messageSendStatusDTO){
        return R.ok(pdsRemindMessageService.updateSendStatus(messageSendStatusDTO));
    }

    /**
     * 通知信息已读
     * @param messageReadStatusDTO 记录
     * @return 成功标识
     */
    @ApiOperation("通知信息已读")
    @PutMapping("/editReadStatus")
    public R<Boolean> editRemindMessage(@RequestBody MessageReadStatusDTO messageReadStatusDTO){
        return R.ok(pdsRemindMessageService.updateReadStatus(messageReadStatusDTO));
    }
}